/**
 * 日期格式化
 * @param date
 * @param fmt
 * @returns {*}
 */
 export function formatDate (date, fmt) {
    const o = {
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'h+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds(),
      'q+': Math.floor((date.getMonth() + 3) / 3),
      S: date.getMilliseconds()
    }
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (var k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
      }
    }
    return fmt
  }
  
  // 30天后时间
  export function formatDateDelay (date0, fmt, num) { // 距离现在num多少天
    const date1 = date0
    const date = new Date(date1)
    date.setDate(date1.getDate() + num)
    const o = {
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'h+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds(),
      'q+': Math.floor((date.getMonth() + 3) / 3),
      S: date.getMilliseconds()
    }
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (var k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
      }
    }
    return fmt
  }
  
  export function dateReplace (val) {
    let date = ''
    if (val && typeof val === 'string') {
      if (val.includes('-')) date = val.replace(/-/g, '/')
      else date = val
    }
    return new Date(date)
  }
  
  export function betweenTime (begin, end) {
    if (!begin || !end || begin === 'null' || end === 'null') return 0
    begin = dateReplace(begin)
    end = dateReplace(end)
    const timestamp = Date.parse(end) - Date.parse(begin)
    if (timestamp < 0) return 0
    return Math.ceil(timestamp / 86400000)
  }
  
  export function getTime (val) {
    return dateReplace(val).getTime()
  }